home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Add-Ons / HyperCard / CharCount XFCN 1.0.2 / CharCount.c < prev    next >
C/C++ Source or Header  |  1996-07-07  |  1KB  |  69 lines

  1. /* ----------------------------------------------------------------------
  2.  
  3.     CharCount XFCN
  4.     version 1.0.2
  5.     
  6.     Written by: Paul Celestin
  7.     
  8.     Copyright © 1993-1995 Celestin Company, Inc.
  9.     
  10.     This XFCN returns the number of times a specified character
  11.     appears in the source text.
  12.     
  13.     Requires two parameters: search char, source text.
  14.     
  15.     931204 - 1.0.0 - initial release
  16.     951215 - 1.0.1 - updated for CW7
  17.     960704 - 1.0.2 - updated for CW9
  18.  
  19. ---------------------------------------------------------------------- */
  20.  
  21. #include <A4Stuff.h>
  22. #include <HyperXCmd.h>
  23.  
  24. void DoIt(XCmdPtr paramPtr);
  25.  
  26. pascal void main(XCmdPtr paramPtr)
  27. {
  28.     long oldA4 = SetCurrentA4();
  29.     DoIt( paramPtr );
  30.     SetA4(oldA4);
  31. }
  32.  
  33. void DoIt(XCmdPtr paramPtr)
  34. {
  35.     Str255            copyright = "\pCopyright © 1993-1996 Celestin Company, Inc.";
  36.     char            *p,*c;
  37.     long            count = 0;
  38.     Str255            myString;
  39.  
  40.     if (paramPtr->paramCount != 2)
  41.     {
  42.         paramPtr->returnValue =
  43.             PasToZero(paramPtr,"\pRequires two parameters: search char, source text.");
  44.     }
  45.     else
  46.     {
  47.         MoveHHi(paramPtr->params[0]);
  48.         MoveHHi(paramPtr->params[1]);
  49.         HLock(paramPtr->params[0]);
  50.         HLock(paramPtr->params[1]);
  51.  
  52.         p = *(paramPtr->params[0]);
  53.         c = *(paramPtr->params[1]);
  54.         
  55.         while (*c)
  56.         {
  57.             if (*c++ == *p)
  58.                 ++count;
  59.         }
  60.         NumToStr(paramPtr,count,myString);
  61.  
  62.         paramPtr->returnValue = PasToZero(paramPtr,myString);
  63.         
  64.         HUnlock(paramPtr->params[0]);
  65.         HUnlock(paramPtr->params[1]);
  66.     }
  67.  
  68. }
  69.